package cn.edu.ctgu.junitTest;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

/**
 * 
 * @author tiger
 * @date 2021年3月8日-下午12:39:18
 */
public class Configuration {

	
	 private Properties props = new Properties();

	    /**
	    * 读取属性配置文件
	    * 
	    * @param confFile
	    */
	    public void fromFile(File confFile) {
	        try(FileInputStream in = new FileInputStream(confFile);){
	            props.load(new InputStreamReader(in,StandardCharsets.UTF_8));
	        } catch (IOException e) {
	        throw new ValueParseException("配置文件解析错误");
	        } 
	    }

	    /**
	    * 获取键值
	    * 
	    * @param key
	    * @return value
	    */
	    public String getProp(String key) {
	        return props.getProperty(key);
	    }

	    /**
	    * 获取布尔类型键值
	    * 
	    * @param key
	    * @return value
	    */
	    public boolean getBoolean(String key) {
	        String value = props.getProperty(key);
	        if ("true".equalsIgnoreCase(value)) {
	            return true;
	        }
	        if ("false".equalsIgnoreCase(value)) {
	            return false;
	        }
	        throw new ValueParseException("键值不存在");
	    }
	    
	    public Integer getInt(String key, int defaultValue) {
	    	String value = props.getProperty(key);
	    	
	    	if(value != null) {
	    		int value_int = Integer.parseInt(value);
	    		return value_int;
	    	}
	    	else return defaultValue;
	    }


		public boolean getBooleanWithDefault(String key, boolean defaultValue) {
			String value = props.getProperty(key);
	    	
	    	if(value != null) {
	    		boolean value_boolean = Boolean.getBoolean(value);
	    		return value_boolean;
	    	}
	    	else return defaultValue;
			
		}
		
		public Date getDate(String key, Date defaultValue) throws ParseException {
			String value = props.getProperty(key);
	    	
	    	if(value != null) {
	    		java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd");
	    		Date value_date = (Date) formatter.parse(value);
	    		return  value_date;
	    	}
	    	else return defaultValue;
			
		}

	
}
